/**
 * 
 */
package controller.os;

import java.util.ArrayList;
import java.util.Collection;

import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;

import model.OrdemServico;
import controller.util.UtilTela;
import dao.ItemNaoEncontradoException;
import dao.OrdemServicoDAOLocal;
import facade.OsMoveisException;

/**
 * @author user
 */
public class OrdemServicoController {
	
	
	private Collection <OrdemServico> listaOss = new ArrayList<OrdemServico>();
	private String conteudoPesquisa;
	
	public String getConteudoPesquisa() {
		return conteudoPesquisa;
	}


	public void setConteudoPesquisa(String conteudoPesquisa) {
		this.conteudoPesquisa = conteudoPesquisa;
	}


	@EJB
	private OrdemServicoDAOLocal osDao;
	
	private SelectItem[] selTipoPesquisa = {
			new SelectItem("NUM", "Numero da OS"),
			new SelectItem("CLI", "Nome do Cliente")};
	

	private String campoPesquisa;
	
	


	public SelectItem[] getSelTipoPesquisa() {
		return selTipoPesquisa;
	}


	public void setSelTipoPesquisa(SelectItem[] selTipoPesquisa) {
		this.selTipoPesquisa = selTipoPesquisa;
	}


	public void pesquisa(ActionEvent ae) {
		
			try {
				this.listaOss.clear();
				Collection<OrdemServico> listaTempOs = null;
				if (conteudoPesquisa.trim().equals("") || conteudoPesquisa == null) {
					listaTempOs = osDao.findAllOSs();
				}
				else if (campoPesquisa.equals("NUM")) {
					listaTempOs = osDao.findOSByNumOs(Integer.parseInt(conteudoPesquisa));
				}
				else if (campoPesquisa.equals("CLI")) {
					listaTempOs = osDao.findOSByNomeCliente(conteudoPesquisa);
				}
				
				if (listaTempOs != null && !listaTempOs.isEmpty()) {
					this.listaOss = listaTempOs;
				}
			} catch (ItemNaoEncontradoException e) {
				UtilTela.mostraMensagem(null, e.getMessage(), FacesMessage.SEVERITY_INFO);
			}
		}
		
	
	public void cancelar (ActionEvent ae) {
		Integer num = (Integer)ae.getComponent().getAttributes().get("num");
		osDao.cancelar(num);
		UtilTela.mostraMensagem(null, "Cancelamento Efetuado", FacesMessage.SEVERITY_INFO);
		pesquisa(ae);
	}
	
	public OrdemServicoController() {
		
	}
	
	public void capturaValorPesquisa(ValueChangeEvent vce) {
		if (vce.getNewValue() != null && vce.getNewValue().toString().trim() != "") {
			this.campoPesquisa = vce.getNewValue().toString();
		}
	}
	

	public Collection<OrdemServico> getListaOss() {
		return listaOss;
	}
	
	public String getCampoPesquisa() {
		return campoPesquisa;
	}


	public void setCampoPesquisa(String campoPesquisa) {
		this.campoPesquisa = campoPesquisa;
	}

}
